package com.sistemadistribucion.servlets;

import java.io.*;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import DTO.EmpleadoVO;
import DTO.UsuarioVO;
import Exception.NoExisteException;

import com.sistemadistribucion.controlador.BDWeb;

@SuppressWarnings("unused")
@WebServlet(asyncSupported = true, urlPatterns = { "/Sistema" })
public class Sistema extends HttpServlet 
{
	/**
	 * 
	 */
	private static final long serialVersionUID = -906180903427012837L;


	public Sistema() 
    {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		doPost(request, response);
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		try 
		{ 	
			String action = request.getParameter("action");
			String jspPage = "main.jsp";
				
			if ((action==null) || (action.length() < 1) )
			{
				action = "default";
			}
			else
			{
				if ("iniciarSesion".equals(action)) 
				{
					System.out.println("Voy a validar el usuario" + request.getParameter("txtUsuario") +  request.getParameter("txtPassword"));
					BDWeb bd = BDWeb.getInstancia();
					System.out.println("Encontre el BD Web");
					UsuarioVO usu = bd.validarUsuario(request.getParameter("txtUsuario"),request.getParameter("txtPassword"));
					
					if (usu != null)
					{
						EmpleadoVO empleado = BDWeb.getInstancia().buscarEmpleadoUsuario(usu);
						System.out.println("Usuario validado");
						
						Integer numSucursal = BDWeb.getInstancia().obtenerNumSucursalEmpleado(empleado.getDni());
						String nomSucursal = BDWeb.getInstancia().obtenerNomSucursalEmpleado(numSucursal);
						System.out.println("La sucursal es la " + numSucursal + ": " + nomSucursal);

						HttpSession sesionIniciada = request.getSession();
						sesionIniciada.setAttribute("usuario", usu.getUsuario());
						sesionIniciada.setAttribute("sucursal", Integer.toString(numSucursal));
						sesionIniciada.setAttribute("sucursalNombre", nomSucursal);
					}
					else
					{
						jspPage = "mostrarMensaje.jsp";
						request.setAttribute("mensaje", "El usuario y/o contraseña no es valido.");		
					}
				}
				else
				{
					if ("cerrarSesion".equals(action)) {
						HttpSession sesionIniciada = request.getSession();
						sesionIniciada.setAttribute("usuario", "");					
					}
				}
			}
	
			dispatch(jspPage, request, response);
		
		} 
		catch (Exception e) 
		{			
			request.setAttribute("mensaje", "Error: \n Descripcion:"+e.toString());
			dispatch("mostrarMensaje.jsp", request, response);
		}
	}
	
	
	protected void dispatch(String jsp, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		if(jsp != null)
		{
			RequestDispatcher rd = request.getRequestDispatcher(jsp);
			rd.forward(request, response);
		}
	}
	
}
